package lanqiao._01基础练习;

import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec 问题描述
 * 利用字母可以组成一些美丽的图形，下面给出了一个例子：
 * ABCDEFG
 * BABCDEF
 * CBABCDE
 * DCBABCD
 * EDCBABC
 * 这是一个5行7列的图形，请找出这个图形的规律，并输出一个n行m列的图形。
 * 输入格式
 * 输入一行，包含两个整数n和m，分别表示你要输出的图形的行数的列数。
 * 输出格式
 * 输出n行，每个m个字符，为你的图形。
 * 样例输入
 * 5 7
 * 样例输出
 * ABCDEFG
 * BABCDEF
 * CBABCDE
 * DCBABCD
 * EDCBABC
 * @since 2022 - 10 - 27 - 22:33
 */
public class _12字母图形 {
}
class Main12{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), m = sc.nextInt();
        char[] s = new char[m];
        //第一行 从 A 开始
        for(int i = 0; i < m; i++){
            s[i] = (char)('A' + i);
            System.out.print(s[i]);
        }
        System.out.println();
        //下一行从第二个开始，是上一行右移一位
        for(int i = 0; i < n - 1; i++){
            if (m - 1 >= 0) System.arraycopy(s, 0, s, 1, m - 1);
            //第一个字符是上一行第一个字符的下一个字符
            s[0] = (char)(s[0] + 1);
            for(int j = 0; j < m; j++){
                System.out.print(s[j]);
            }
            System.out.println();
        }
    }
}
class Main121 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();// 负责控制行
        int m = sc.nextInt();// 负责控制列
        char[][] erWeiShuZu = new char[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                erWeiShuZu[i][j] = (char) (Math.abs(i - j) + 65);// 将行与列的差的绝对
                // 值就是元素的所在位置的值，加上65转化为ASCII就为本题答案
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(erWeiShuZu[i][j]);
            }
            System.out.println();
        }

    }

}